package org.szy.plugin.dev.service;

import com.mybatisflex.core.query.QueryWrapper;
import org.szy.core.common.param.CommonMoveParam;
import org.szy.core.common.param.CommonStatusParam;
import org.szy.core.common.service.BaseService;
import org.szy.plugin.dev.entity.DevDict;
import org.szy.plugin.dev.param.DevDictQueryParam;
import org.szy.plugin.dev.pojo.DevDictTree;

import java.util.List;

/**
 * 开发_字典Service接口
 *
 * @author wangbuhao
 * @since 2023-06-20 16:05:55
 **/
public interface DevDictService extends BaseService<DevDict> {

    /**
     * 获取开发_字典查询Wrapper
     *
     * @author wangbuhao
     * @since 2023-06-20 16:05:55
     */
    QueryWrapper qwByQuery(DevDictQueryParam param);

    /**
     * 获取开发_字典列表
     *
     * @author wangbuhao
     * @since 2023-06-20 16:05:55
     */
    List<DevDict> list(DevDictQueryParam param);

    /**
     * 添加开发_字典
     *
     * @param entity 开发_字典对象
     * @return 操作结果
     */
    boolean add(DevDict entity);

    /**
     * 编辑数据字典
     *
     * @author wangbuhao
     * @since 2023/02/15 11:22
     */
    boolean edit(DevDict entity);

    /**
     * 删除数据字典
     *
     * @author wangbuhao
     * @since 2023/02/15 11:22
     */
    boolean deleteById(Long id);

    /**
     * 构建数据字典树形结构
     *
     * @param list 数据字典列表
     * @return 树形结构列表
     */
    List<DevDictTree> buildTrees(List<DevDict> list);

    /**
     * 移动数据字典位置
     *
     * @param param 移动参数
     */
    boolean move(CommonMoveParam param);

    /**
     * 移动数据字典位置
     *
     * @param param 移动参数
     * @return 移动结果
     */
    boolean modifyStatus(CommonStatusParam param);

    /**
     * 树形列表根据标识
     * @param param 查询参数
     */
    List<DevDictTree> treeByCode(DevDictQueryParam param);
}
